namespace SmartMathLibrary.Geometry
{
    /// <summary>
    /// An interface to implement a Rectangle.
    /// </summary>
    public interface IRectangle
    {
        /// <summary>
        /// Gets or sets the first point of the rectangle (left-bottom).
        /// </summary>
        /// <value>The first point of the rectangle (left-bottom).</value>
        Point2D PointA { get; set; }

        /// <summary>
        /// Gets or sets the second point of the rectangle (right-top).
        /// </summary>
        /// <value>The second point of the rectangle (right-top).</value>
        Point2D PointB { get; set; }

        /// <summary>
        /// Gets the height of the rectangle.
        /// </summary>
        /// <value>The height of the rectangle.</value>
        double Height { get; }

        /// <summary>
        /// Gets the width of the rectangle.
        /// </summary>
        /// <value>The width of the rectangle.</value>
        double Width { get; }

        /// <summary>
        /// Compares the current instance to another rectangle.
        /// </summary>
        /// <param name="compare">The rectangle to compare.</param>
        /// <returns>True if the rectangle positions are even otherwise, false.</returns>
        bool CompareTo(Rectangle compare);
    }
}